﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace GestionEco
{
    public class Loup : Carnivore
    {
        private static int numero = 0;

        public Loup(bool s, int uneVieMax, int uneAttaque, int uneEsquive, int desDegats, int uneVue, int uneRegen, int uneFaimMax, int unCoeffFaim, int uneSoifMax, int unCoeffSoif, int desPointsActionActuels, int unAgeMax, int uneMajorite, int unNbTourReprod, Image imageLoup)
            : base(s, uneVieMax, uneAttaque, uneEsquive, desDegats, uneVue, uneRegen, uneFaimMax, unCoeffFaim, uneSoifMax, unCoeffSoif, desPointsActionActuels, unAgeMax, uneMajorite, unNbTourReprod, "Loup-" + numero++, imageLoup, new List<String> { "Plaine, Forêt" })
        {

        }

        public override void seDeplacer()
        {
            base.seDeplacer();
        }

        public override void seNourrir(EtreVivant e)
        {
            base.seNourrir(e);
        }

        public override EtreVivant seReproduire(EtreVivant unLoup)
        {
            if (!retraitPoints(POINT_SEREPRODUIRE))
            {
                Console.WriteLine("Plus de points pour se reproduire");
                return null;
            }
            else
            {
                Loup enfant = null;
                if (this.Sexe != unLoup.Sexe)
                {
                    Random rnd = new Random();

                    int enfAttaque = (this.Attaque + unLoup.Attaque) / 2;
                    int enfEsquive = (this.Esquive + unLoup.Esquive) / 2;
                    int enfDegats = (this.Degats + unLoup.Degats) / 2;
                    int enfVue = (this.Vue + unLoup.Vue) / 2;
                    int enfRegen = (this.Regen + unLoup.Regen) / 2;
                    int enfFaimMax = (this.FaimMax + unLoup.FaimMax) / 2;
                    int enfCoeffFaim = (this.CoeffFaim + unLoup.CoeffFaim) / 2;
                    int enfVieMax = (this.VieMax + unLoup.VieMax) / 2;
                    int enfSoifMax = (this.SoifMax + unLoup.SoifMax) / 2;
                    int enfCoeffSoif = (this.CoeffSoif + unLoup.CoeffSoif) / 2;
                    int enfPointsActuel = 6;
                    int enfAgeMax = (this.AgeMax + unLoup.AgeMax) / 2;
                    int enfMajorite = (this.Majorite + unLoup.Majorite) / 2;
                    int enfNbTourReprod = (this.NbTourReprod + unLoup.NbTourReprod) / 2;
                    int enfS = rnd.Next(1, 3);
                    bool enfSexe;

                    if (enfS == 1)
                    {
                        enfSexe = true;
                    }
                    else
                    {
                        enfSexe = false;
                    }


                    enfant = new Loup(enfSexe, enfVieMax, enfAttaque, enfEsquive, enfDegats, enfVue, enfRegen, enfFaimMax, enfCoeffFaim, enfSoifMax, enfCoeffSoif, enfPointsActuel, enfAgeMax, enfMajorite, enfNbTourReprod, this.imageEtre);
                }
                else
                {
                    Console.WriteLine("Les deux etres vivants ont le meme sexe");
                    return null;
                }

                return enfant;
            }
        }
    }
}
